Conectividad en la Argentina¶
En este ejemplo trabajaremos con información sobre la conectividad a internet en la Argentina creado en el año 2019. El archivo csv proviene de datos.gov.ar.
Primero debemos importar las librerías Pandas, para analizar el archivo, y Plotly para la representación mediante gráficos.
import pandas as pd
import plotly.express as px
Leemos con pandas el archivo csv y lo guardamos en la variable conexiones.
Sobre la tabla utilizamos la funcion .head(20) para que se nos muestren las primeras 20 filas que contiene.
conexiones = pd.read_csv("Conectividad_Internet.csv")
conexiones.head(20)
Provincia | Partido | Localidad | Poblacion | ADSL | CABLEMODEM | DIALUP | FIBRAOPTICA | SATELITAL | WIRELESS | TELEFONIAFIJA | 3G | 4G | link | Latitud | Longitud | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | BUENOS AIRES | 25 de Mayo | 25 de Mayo | 23408 | SI | SI | -- | SI | SI | SI | SI | SI | SI | 6854100.0 | -35.433939 | -60.173121 |
1 | BUENOS AIRES | 25 de Mayo | Agustín Mosconi | 280 | -- | -- | -- | -- | -- | -- | SI | -- | -- | 6854010.0 | -35.739217 | -60.559063 |
2 | BUENOS AIRES | 25 de Mayo | Del Valle | 899 | SI | -- | -- | -- | SI | -- | -- | SI | SI | 6854020.0 | -35.897345 | -60.731609 |
3 | BUENOS AIRES | 25 de Mayo | Ernestina | 145 | SI | -- | -- | -- | -- | -- | -- | -- | -- | 6854030.0 | -35.270234 | -59.557503 |
4 | BUENOS AIRES | 25 de Mayo | Gobernador Ugarte | 547 | -- | -- | -- | -- | -- | SI | -- | -- | -- | 6854040.0 | -35.164397 | -60.081358 |
5 | BUENOS AIRES | 25 de Mayo | Lucas Monteverde | 63 | -- | -- | -- | -- | -- | SI | -- | -- | -- | 6854050.0 | -35.483827 | -59.988065 |
6 | BUENOS AIRES | 25 de Mayo | Norberto de la Riestra | 4524 | -- | SI | -- | -- | -- | SI | SI | SI | SI | 6854060.0 | -35.272779 | -59.771933 |
7 | BUENOS AIRES | 25 de Mayo | Pedernales | 1432 | SI | -- | -- | -- | -- | -- | -- | -- | SI | 6854070.0 | -35.266609 | -59.630657 |
8 | BUENOS AIRES | 25 de Mayo | San Enrique | 279 | -- | -- | -- | -- | -- | -- | SI | -- | -- | 6854080.0 | -35.778503 | -60.354645 |
9 | BUENOS AIRES | 25 de Mayo | Valdés | 579 | -- | -- | -- | -- | -- | -- | SI | -- | SI | 6854090.0 | -35.648813 | -60.467259 |
10 | BUENOS AIRES | 9 de Julio | 12 de Octubre | 219 | -- | -- | -- | -- | -- | SI | SI | -- | -- | 6588030.0 | -35.607731 | -60.918293 |
11 | BUENOS AIRES | 9 de Julio | 9 de Julio | 36494 | SI | SI | SI | SI | -- | SI | SI | SI | SI | 6588100.0 | -35.444744 | -60.884343 |
12 | BUENOS AIRES | 9 de Julio | Alfredo Demarchi (Est. Facundo Quiroga) | 1853 | SI | -- | -- | -- | -- | -- | SI | SI | SI | 6588010.0 | -35.292982 | -61.407254 |
13 | BUENOS AIRES | Carlos Tejedor | Curarú | 422 | -- | -- | -- | -- | -- | -- | SI | -- | -- | 6154030.0 | -35.640350 | -62.192437 |
14 | BUENOS AIRES | Carlos Tejedor | Timote | 526 | -- | -- | -- | -- | -- | -- | SI | -- | -- | 6154040.0 | -35.347762 | -62.224653 |
15 | BUENOS AIRES | Carlos Tejedor | Tres Algarrobos (Est. Cuenca) | 3201 | -- | -- | -- | -- | SI | -- | SI | SI | SI | 6154050.0 | -35.197982 | -62.773081 |
16 | BUENOS AIRES | Carmen de Areco | Carmen de Areco | 12775 | SI | SI | SI | SI | -- | SI | SI | SI | SI | 6161010.0 | -34.377699 | -59.822902 |
17 | BUENOS AIRES | Carmen de Areco | Pueblo Gouin | 122 | -- | -- | -- | -- | -- | SI | -- | -- | -- | 6161020.0 | -34.495119 | -59.802974 |
18 | BUENOS AIRES | Carmen de Areco | Tres Sargentos | 391 | -- | -- | -- | -- | -- | SI | SI | -- | SI | 6161030.0 | -34.466478 | -60.000870 |
19 | BUENOS AIRES | Castelli | Castelli | 6859 | SI | SI | -- | SI | SI | SI | SI | SI | SI | 6168010.0 | -36.091694 | -57.807180 |
Los datasets suelen tener cantidades enormes de informacion, por lo que Pandas solo nos mostrara un pantallazo de lo que es toda la tabla.
Para saber cual es la cantidad de filas y columnas con las que voy a trabajar, se puede usar la siguiente funcion. El primer valor que devuelve es la cantidad de filas, y el segundo la cantidad de columnas.
conexiones.shape
(4312, 16)
Si se quiere saber que informacion contiene cada columna, se puede llamar a la siguiente función.
conexiones.columns
Index(['Provincia', 'Partido', 'Localidad', 'Poblacion', 'ADSL', 'CABLEMODEM', 'DIALUP', 'FIBRAOPTICA', 'SATELITAL', 'WIRELESS', 'TELEFONIAFIJA', '3G', '4G', 'link', 'Latitud', 'Longitud'], dtype='object')
Como podemos ver, la tabla contiene las siguientes columnas:
- Provincia
- Partido
- Localidad
- Poblacion
- ADSL
- CABLEMODEM
- DIALUP
- FIBRAOPTICA
- SATELITAL
- WIRELESS
- TELEFONIAFIJA
- 3G
- 4G
- link
- Latitud
- Longitud
En el siguiente analisis observaremos el porcentaje de localidades con conectividad inalambrica(wireless), a través de un grafico circular.
SATELITAL=conexiones['SATELITAL'].value_counts().rename_axis('SATELITAL').reset_index(name='Localidades')
SATELITAL.style.hide(axis='index')
SATELITAL
SATELITAL | Localidades | |
---|---|---|
0 | -- | 3314 |
1 | SI | 998 |
torta = px.pie(SATELITAL, values='Localidades', names='Localidades', title='Cantidad de localidades con conectividad satelital', width=1000, height=1000)
torta.show()
En el siguiente analisis observaremos el porcentaje de localidades con Fibraoptica, a través de un grafico circular.
FIBRAOPTICA=conexiones['FIBRAOPTICA'].value_counts().rename_axis('FIBRAOPTICA').reset_index(name='Localidades')
FIBRAOPTICA.style.hide(axis='index')
FIBRAOPTICA
FIBRAOPTICA | Localidades | |
---|---|---|
0 | -- | 2991 |
1 | SI | 1321 |
torta = px.pie(FIBRAOPTICA, values='Localidades', names='Localidades', title='Cantidad de localidades con 4G', width=1000, height=1000)
torta.show()
En el siguiente analisis observaremos el porcentaje de localidades con conectividad 4G, a través de un grafico circular.
C4G=conexiones['4G'].value_counts().rename_axis('4G').reset_index(name='Localidades')
C4G.style.hide(axis='index')
C4G
4G | Localidades | |
---|---|---|
0 | SI | 2574 |
1 | -- | 1738 |
torta = px.pie(C4G, values='Localidades', names='Localidades', title='Cantidad de localidades con 4G', width=1000, height=1000)
torta.show()
Como podemos observar la mayoria de las localidades no dispone a Fibraoptica, 4G o Conexión satelital.
El siguiente grafico muestra las localidades con 4G. Primero debemos filtrar aquellas filas que digan SI, para disponer solo de aquellas localidades con 4G. Luego las ubicamos por su latitud y longitud.
mapa_4G = conexiones[["4G","Latitud","Longitud"]]
si = ['SI']
mask = mapa_4G[mapa_4G['4G'].isin(si)]
mask
4G | Latitud | Longitud | |
---|---|---|---|
0 | SI | -35.433939 | -60.173121 |
2 | SI | -35.897345 | -60.731609 |
6 | SI | -35.272779 | -59.771933 |
7 | SI | -35.266609 | -59.630657 |
9 | SI | -35.648813 | -60.467259 |
... | ... | ... | ... |
4307 | SI | -24.473571 | -65.074393 |
4308 | SI | -24.429325 | -65.184397 |
4309 | SI | -24.505687 | -64.975926 |
4310 | SI | -24.438520 | -65.162225 |
4311 | SI | -24.532994 | -65.074414 |
2574 rows × 3 columns
import plotly.graph_objects as go
fig = go.Figure(data=go.Scattergeo(
lon = mask['Longitud'],
lat = mask['Latitud'],
text = mask,
mode = 'markers',
))
fig.update_layout(
title = '4G locations',
geo_scope='south america',
)
fig.update_geos(fitbounds="locations")
El siguiente grafico muestra las localidades con Fibraoptica. Primero debemmos filtrar aquellas filas que digan SI, para disponer solo de aquellas localidades con Fibraoptica. Luego las ubicamos por su latitud y longitud.
mapa_Fibra = conexiones[["FIBRAOPTICA","Latitud","Longitud"]]
si = ['SI']
mask1 = mapa_Fibra[mapa_Fibra['FIBRAOPTICA'].isin(si)]
fig = go.Figure(data=go.Scattergeo(
lon = mask1['Longitud'],
lat = mask1['Latitud'],
text = mask1,
mode = 'markers',
))
fig.update_layout(
title = 'Fibraoptica locations',
geo_scope='south america',
)
fig.update_geos(fitbounds="locations")